(部分還未完成)
昨天我們已經介紹過 Logistic Regression 的模型已經成本函數,接下來就用 python 來實現一下吧!
詳細的過程可以到 notebook 參考。這次的實驗是將歷史信用卡發放資料(當然是假資料)當作訓練集,來預測之後如果有新年齡和薪水資料,判斷是否要審核信用卡發放。
x 軸為年齡,y 軸為薪水,+
代表審核通過,而 -
代表不通過。我們希望找到一條線把這兩個區間分開。
def normalize(input):
mean = np.mean(input, axis=0)
return (input - mean) / mean
def sigmoid(z):
return 1 / (1 + np.exp(-z))
def predict(x, weights):
return sigmoid(x.dot(weights))
def gradient(X, weights, Y):
g = np.zeros(2)
m = len(X)
i = 0
for x in X:
prediction = sigmoid(weights.dot(x))
g += (prediction - Y[i]) * x
i += 1
return g / m
def gradient_descent(X, Y, alpha, step):
weights = np.ones(2)
print(X, Y)
for i in range(0, step):
weights = weights - (alpha * gradient(X, weights, Y))
return weights
mean = np.mean(train_data, axis=0)
nor_train_data = normalize(train_data)
w = gradient_descent(nor_train_data, train_label, 1, 1000)
在預測與分類上,線性迴歸與邏輯回歸都是相當簡單且有效的工具,有時候並不需要很強大的神經網路才能夠精準判斷資料,在特徵不多,資料量不大的情況下,使用線性迴歸與邏輯回歸是個快速且精準的選擇之一。